home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / jaz_clib.arc / DOSREADS.ASM < prev    next >
Assembly Source File  |  1989-04-09  |  1KB  |  45 lines

  1. Comment *
  2. ┌────────────────────────────────────────────────────────────────────────────┐
  3. │Dosreads.asm                                     │
  4. │Allows direct sector access from 'C' which is not possible using int86      │
  5. │because this int leaves a word on the stack which would cause int86 to      │
  6. │return to some unknown place.                             │
  7. │usage:                                      │
  8. │char wbuf[512];     ;at lease 512 bytes for sector buffer             │
  9. │int werror;                                     │
  10. │                                         │
  11. │werror = dosreads(0,0,1,wbuf); ;  reads drive 'A',sector 0, 1 sector into   │
  12. │                ;  wbuf.                     │
  13. │                                         │
  14. │                                         │
  15. │ (C) JazSoft Software by Jack A. Zucker (301) 794-5950              │
  16. └────────────────────────────────────────────────────────────────────────────┘
  17. *
  18.     assume cs:_text
  19. _text    segment public byte 'code'
  20.     public _dosreads
  21.  
  22. _dosreads   proc near
  23.  
  24.     push bp
  25.     mov bp,sp
  26.     push si         ; save user's "C" register variables
  27.     push di
  28.  
  29.     mov al,[bp+4]        ; drive number
  30.     mov dx,[bp+6]        ; which sector to read
  31.     mov cx,[bp+8]        ; amount of sectors
  32.     mov bx,[bp+0Ah]     ; offset of buffer
  33.     int 25h
  34.     jc _dosreadserror    ; if carry then error occurred
  35.     mov ax,0        ; else return a zero
  36. _dosreadserror:
  37.     popf            ; int 25h pushes flags
  38.     pop di            ; restore user's "C" register variables
  39.     pop si
  40.     pop bp            ; restore base pointer
  41.     ret
  42. _dosreads   endp
  43. _text    ends
  44. end
  45.